using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SIOGDE.Negocios.Servicios
{
   public class BusinessFactory
   {
   #region Constructor
   static BusinessFactory instance = null;
   public static BusinessFactory Current
   {
   get
   {
       if (instance == null)
           instance = new BusinessFactory();
       return instance;
   }
   }
   public T GetInstance<T>(string className)
   {
     return Create<T>("SIOGDE.Negocios."+className+", SIOGDE.Negocios");
   }
   public static T Create<T>(string classFullName)
   {
       var result = (T)Didsoft.Core.Reflection.InstanciateObjectFromAssembly(classFullName);
       if (result == null)
           throw new NullReferenceException("cannot create instance of type "+classFullName);
       return result;
   }
   #endregion
   public IUnidadMilitarNegociosServicio GetUnidadMilitarNegocios()
   {
       return this.GetInstance<IUnidadMilitarNegociosServicio>("UnidadMilitarNegocios");
   }
   public IEspecialidadNegociosServicio GetEspecialidadNegocios()
   {
       return this.GetInstance<IEspecialidadNegociosServicio>("EspecialidadNegocios");
   }
   public IEvaluacionDestinoNegociosServicio GetEvaluacionDestinoNegocios()
   {
       return this.GetInstance<IEvaluacionDestinoNegociosServicio>("EvaluacionDestinoNegocios");
   }
   public IFuerzaNegociosServicio GetFuerzaNegocios()
   {
       return this.GetInstance<IFuerzaNegociosServicio>("FuerzaNegocios");
   }
   public IGestionNegociosServicio GetGestionNegocios()
   {
       return this.GetInstance<IGestionNegociosServicio>("GestionNegocios");
   }
   public IGradoNegociosServicio GetGradoNegocios()
   {
       return this.GetInstance<IGradoNegociosServicio>("GradoNegocios");
   }
   
   public IHistorialAntecedenteNegociosServicio GetHistorialAntecedenteNegocios()
   {
       return this.GetInstance<IHistorialAntecedenteNegociosServicio>("HistorialAntecedenteNegocios");
   }
   public IHistorialAscensoNegociosServicio GetHistorialAscensoNegocios()
   {
       return this.GetInstance<IHistorialAscensoNegociosServicio>("HistorialAscensoNegocios");
   }
   public IHistorialEspecialidadNegociosServicio GetHistorialEspecialidadNegocios()
   {
       return this.GetInstance<IHistorialEspecialidadNegociosServicio>("HistorialEspecialidadNegocios");
   }
   public IMediaNegociosServicio GetMediaNegocios()
   {
       return this.GetInstance<IMediaNegociosServicio>("MediaNegocios");
   }
   public IPersonaNegociosServicio GetPersonaNegocios()
   {
       return this.GetInstance<IPersonaNegociosServicio>("PersonaNegocios");
   }
   public IRegionUnidadNegociosServicio GetRegionUnidadNegocios()
   {
       return this.GetInstance<IRegionUnidadNegociosServicio>("RegionUnidadNegocios");
   }
   public IRequerimientoConfigNegociosServicio GetRequerimientoConfigNegocios()
   {
       return this.GetInstance<IRequerimientoConfigNegociosServicio>("RequerimientoConfigNegocios");
   }
   public ITipoCargoComandoNegociosServicio GetTipoCargoComandoNegocios()
   {
       return this.GetInstance<ITipoCargoComandoNegociosServicio>("TipoCargoComandoNegocios");
   }
   public ITipoUnidadNegociosServicio GetTipoUnidadNegocios()
   {
       return this.GetInstance<ITipoUnidadNegociosServicio>("TipoUnidadNegocios");
   }
   public IDestinoAsignadoNegociosServicio GetDestinoAsignadoNegocios()
   {
       return this.GetInstance<IDestinoAsignadoNegociosServicio>("DestinoAsignadoNegocios");
   }
   public IComandoNegociosServicio GetComandoNegocios()
   {
       return this.GetInstance<IComandoNegociosServicio>("ComandoNegocios");
   }
   public ICategoriaUnidadNegociosServicio GetCategoriaUnidadNegocios()
   {
       return this.GetInstance<ICategoriaUnidadNegociosServicio>("CategoriaUnidadNegocios");
   }
   public IArmaNegociosServicio GetArmaNegocios()
   {
       return this.GetInstance<IArmaNegociosServicio>("ArmaNegocios");
   }
   public IPersonaArmaNegociosServicio GetPersonaArmaNegocios()
   {
       return this.GetInstance<IPersonaArmaNegociosServicio>("PersonaArmaNegocios");
   }
   public ISmtpConfigNegociosServicio GetSmtpConfigNegocios()
   {
       return this.GetInstance<ISmtpConfigNegociosServicio>("SmtpConfigNegocios");
   }
   }
}

